In computer networks, packet processing is a common function that can be performed by many types of network elements and devices. Typically, packet processing is conducted at a network element, which inspects or analyzes an incoming packet before performing at least one packet processing operation on the received packet. The network element may utilize packet header information to determine the origin of the packet, the destination of the packet, the port on which the packet was received, and the types of protocols associated with the packet. Based on the information obtained from each packet, the network element may determine the types of processing to be applied to the packet. For example, a network element may execute algorithms that extract and utilize packet header information to query databases in order to determine the type of packet processing operation to apply to the received packet.
Problems arise, however, if a significant number of databases are continuously queried by a network element after receiving each incoming packet (i.e., per-packet processing). Specifically, as the number of policy databases is being increased and the databases are being repeatedly searched after the receipt of each incoming packet, the packet processing resources associated with these networks are significantly strained. Consequently, advanced packet processing techniques, such as flow acceleration, may be employed by network operators to improve the speed and efficiency of a network element's ability to process a group of related packets (i.e., per-flow processing). Flow acceleration involves a packet processing procedure that eliminates the need for repeated database searches in the event a packet associated with a previously processed packet flow (e.g., a group of packets containing similar header data) is received.
If the network element determines that after inspection a received packet is related to a previously processed packet (i.e., the received packet is part of a common packet flow), then the packet header data may be used to consult one or more packet processing databases. A packet processing database includes a plurality of indices that directly “point” to entries in a policy database. The policy database entries contain packet processing operations and activities which may be applied to a received packet to be processed. Notably, by using the aforementioned flow acceleration technique to reference a packet processing database to acquire an index (i.e., that directly points to an entry in a policy database), the need for searching the numerous policy databases themselves is eliminated.
Although flow acceleration enables a network element to perform packet processing with greater efficiency since the policy databases do not have to be fully searched each time a packet is received, flow acceleration still requires that the appropriate policy database be accessed. Thus, packet processing efficiency could be improved even further if this step was eliminated.
Accordingly, a need exists for improved methods, systems, and computer readable media for performing flow compilation packet processing.